home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / Notification.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  6KB  |  191 lines

  1. /*
  2.      File:        Notification.h
  3.  
  4.      Contains:    Notification Manager interfaces
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __NOTIFICATION__
  19. #define __NOTIFICATION__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  25. #ifndef __OSUTILS__
  26. #include <OSUtils.h>
  27. #endif
  28. #endif
  29. #ifndef __COLLECTIONS__
  30. #include <Collections.h>
  31. #endif
  32. #ifndef __KERNEL__
  33. #include <Kernel.h>
  34. #endif
  35.  
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39.  
  40. #if PRAGMA_IMPORT_SUPPORTED
  41. #pragma import on
  42. #endif
  43.  
  44. #if PRAGMA_ALIGN_SUPPORTED
  45. #pragma options align=mac68k
  46. #endif
  47.  
  48. /* ------------------ */
  49. #if FOR_SYSTEM8_PREEMPTIVE
  50. typedef struct OpaqueNotificationRef* NotificationRef;
  51. /* notification status flags */
  52.  
  53. enum {
  54.     kInvalidNotification        = 1,                            /* notification ref invalid        */
  55.     kUnSentNotification            = 2,                            /* notification not yet sent    */
  56.     kPostedNotification            = 3                                /* notification has been posted    */
  57. };
  58.  
  59. typedef UInt32 NotificationStatus;
  60. /* notification tags */
  61.  
  62. enum {
  63.     kNotificationTypeTag        = 'type',                        /* type of notification (multiple types allowed) */
  64.     kNotificationRefTag            = 'nref',                        /* notification ref (usually retrieved at completion) */
  65.     kTextNotificationTag        = 'text',                        /* ASCII text */
  66.     kTextObjectNotificationTag    = 'tobj',                        /* text object model format text */
  67.     kSoundNotificationTag        = 'snd ',                        /* sound data in format of 'snd ' resource */
  68.     kSmall8BitIconTag            = 'ics8',                        /* 8-bit icon */
  69.     kSmall4BitIconTag            = 'ics4',                        /* 4-bit icon */
  70.     kSmall1BitMaskIconTag        = 'ics#',                        /* 1-bit icon w/mask */
  71.     kProcessSerialNumberTag        = 'psn '                        /* psn we wish to mark */
  72. };
  73.  
  74. /* notification module identifiers */
  75.  
  76. enum {
  77.     kAlertNotifier                = 'alrt',                        /* display a modal alert with OK button */
  78.     kSoundNotifier                = 'snd ',                        /* play a sound */
  79.     kProcessMenuNotifier        = 'pmnu',                        /* flash icon in title of process menu */
  80.     kAppleMenuNotifier            = 'amnu',                        /* flash icon in title of apple menu */
  81.     kMenuMarkNotifier            = 'mmrk'                        /* put a mark in the process menu */
  82. };
  83.  
  84. typedef OSType NotifierType;
  85. /* notification posting options */
  86.  
  87. enum {
  88.     kAutoDisposeOnCompletionMask = (1L << 0)                    /* dispose the notification request on completion */
  89. };
  90.  
  91. typedef OptionBits NotificationOptions;
  92. /* ------------------ */
  93. extern pascal OSStatus NewNotificationRef(NotificationRef *notification);
  94.  
  95. extern pascal OSStatus AddNotificationCollectionItem(NotificationRef notification, CollectionTag tag, UInt32 id, void *itemData, ByteCount itemSize);
  96.  
  97. extern pascal OSStatus GetNotificationCollectionItem(NotificationRef notification, CollectionTag tag, UInt32 id, void **dataPtr, ByteCount *itemSize);
  98.  
  99. extern pascal OSStatus PostNotification(NotificationRef notification, const KernelNotification *completion, Duration timeOut, NotificationOptions postingOptions);
  100.  
  101. extern pascal NotificationStatus GetNotificationStatus(NotificationRef notification);
  102.  
  103. extern pascal OSStatus DisposeNotificationRef(NotificationRef notification);
  104.  
  105. extern pascal OSStatus NewNotificationRefFromMemory(void *messageBuffer, ByteCount size, NotificationRef *notification);
  106.  
  107. extern pascal ByteCount GetFlattenedNotificationSize(NotificationRef notification);
  108.  
  109. extern pascal OSStatus FlattenNotification(NotificationRef notification, void *buffer);
  110.  
  111. #endif
  112. /* ------------------ */
  113. /* ------------------ */
  114. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  115. typedef struct NMRec NMRec;
  116. typedef NMRec *NMRecPtr;
  117. typedef pascal void (*NMProcPtr)(NMRecPtr nmReqPtr);
  118.  
  119. #if GENERATINGCFM
  120. typedef UniversalProcPtr NMUPP;
  121. #else
  122. typedef NMProcPtr NMUPP;
  123. #endif
  124. struct NMRec {
  125.     QElemPtr                         qLink;                        /* next queue entry*/
  126.     short                             qType;                        /* queue type -- ORD(nmType) = 8*/
  127.     short                             nmFlags;                    /* reserved*/
  128.     long                             nmPrivate;                    /* reserved*/
  129.     short                             nmReserved;                    /* reserved*/
  130.     short                             nmMark;                        /* item to mark in Apple menu*/
  131.     Handle                             nmIcon;                        /* handle to small icon*/
  132.     Handle                             nmSound;                    /* handle to sound record*/
  133.     StringPtr                         nmStr;                        /* string to appear in alert*/
  134.     NMUPP                             nmResp;                        /* pointer to response routine*/
  135.     long                             nmRefCon;                    /* for application use*/
  136. };
  137.  
  138.  
  139. enum {
  140.     uppNMProcInfo = kPascalStackBased
  141.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(NMRecPtr)))
  142. };
  143.  
  144. #if GENERATINGCFM
  145. #define CallNMProc(userRoutine, nmReqPtr)        \
  146.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppNMProcInfo, (nmReqPtr))
  147. #else
  148. #define CallNMProc(userRoutine, nmReqPtr)        \
  149.         (*(userRoutine))((nmReqPtr))
  150. #endif
  151.  
  152. #if GENERATINGCFM
  153. #define NewNMProc(userRoutine)        \
  154.         (NMUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppNMProcInfo, GetCurrentArchitecture())
  155. #else
  156. #define NewNMProc(userRoutine)        \
  157.         ((NMUPP) (userRoutine))
  158. #endif
  159. /* ------------------ */
  160.  
  161. #if GENERATING68K && !GENERATINGCFM
  162. #pragma parameter __D0 NMInstall(__A0)
  163. #endif
  164. extern pascal OSErr NMInstall(NMRecPtr nmReqPtr)
  165.  ONEWORDINLINE(0xA05E);
  166.  
  167.  
  168. #if GENERATING68K && !GENERATINGCFM
  169. #pragma parameter __D0 NMRemove(__A0)
  170. #endif
  171. extern pascal OSErr NMRemove(NMRecPtr nmReqPtr)
  172.  ONEWORDINLINE(0xA05F);
  173.  
  174. #endif
  175. /* ------------------ */
  176.  
  177. #if PRAGMA_ALIGN_SUPPORTED
  178. #pragma options align=reset
  179. #endif
  180.  
  181. #if PRAGMA_IMPORT_SUPPORTED
  182. #pragma import off
  183. #endif
  184.  
  185. #ifdef __cplusplus
  186. }
  187. #endif
  188.  
  189. #endif /* __NOTIFICATION__ */
  190.  
  191.